home *** CD-ROM | disk | FTP | other *** search
/ Delphi Magazine Collection 2001 / Delphi Magazine Collection 20001 (2001).iso / DISKS / Issue57 / Clinic / MyDocsU.pas < prev   
Pascal/Delphi Source File  |  2000-03-24  |  1KB  |  68 lines

  1. unit MyDocsU;
  2.  
  3. {$ifdef Ver90} { Delphi 2.0x }
  4.   {$define DelphiLessThan3}
  5. {$endif}
  6. {$ifdef Ver93} { C++ Builder 1.0x }
  7.   {$define DelphiLessThan3}
  8. {$endif}
  9.  
  10. interface
  11.  
  12. uses
  13.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  14.   StdCtrls;
  15.  
  16. type
  17.   TForm1 = class(TForm)
  18.     Label1: TLabel;
  19.     procedure FormCreate(Sender: TObject);
  20.   private
  21.     { Private declarations }
  22.   public
  23.     { Public declarations }
  24.   end;
  25.  
  26. var
  27.   Form1: TForm1;
  28.  
  29. implementation
  30.  
  31. {$R *.DFM}
  32.  
  33. uses
  34. {$ifdef DelphiLessThan3}
  35.   OLE2,
  36. {$else}
  37.   ActiveX,
  38. {$endif}
  39.   ShellAPI, ShlObj;
  40.  
  41. function GetMyDocuments: String;
  42. var
  43.   PIDL: PItemIDList;
  44.   MyDocsC: array[0..MAX_PATH] of Char;
  45.   Malloc: IMalloc;
  46. begin
  47.   SHGetMalloc(Malloc);
  48.   if (SHGetSpecialFolderLocation(
  49.        Application.Handle, CSIDL_PERSONAL, PIDL) = NOERROR) and
  50.      SHGetPathFromIDList(PIDL, MyDocsC) then
  51.   begin
  52.     Result := MyDocsC;
  53.     Malloc.Free(PIDL)
  54.   end
  55.   else
  56.     raise EInvalidOp.Create(
  57.       'Cannot find personal documents folder')
  58. end;
  59.  
  60. procedure TForm1.FormCreate(Sender: TObject);
  61. begin
  62.   Label1.Caption :=
  63.     'The personal folder is located at: ' +
  64.     GetMyDocuments 
  65. end;
  66.  
  67. end.
  68.